package educar.cargo;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import educar.login.Session;
import educar.principal.IController;
import educar.principal.IView;
import educar.db.DbConnection;
import educar.db.JPA;

public class CargoController {


		private static JPA jpa = new JPA();

		public static boolean existe (String codCar) {
			try {
				Cargo car = getCargo (codCar);
				return true;
			} catch (CargoNoEncontrado ex) {
				return false;
			}
		}
		
		/**
		 * Este metodo nos permite agregar un cargo en la base de datos, es decir agregar un 
		 * nuevo registro en la tabla cargo.
		 * @param cargo
		 * @return
		 */
		public static boolean save(Cargo cargo) {
			try {
				getCargo(cargo.getCodCar());
				return false;
			} catch (CargoNoEncontrado e1) {
				String[] columns = { "codigo","descripcion"};

				PreparedStatement stm = jpa.newRecord(DbConnection.bd+".cargo", columns);

				try {
					
					stm.setString(1, cargo.getCodCar());
					stm.setString(2, cargo.getDesCar());

				} catch (SQLException e) {
					e.printStackTrace();
					return false;
				}

				jpa.create(stm);
				return true;
			}
		}
		
		/**
		 * Con este metodo se elimina un registro de la tabla cargo, que coincide
		 * con el cargo que se pasa como parametro.
		 * @param cargo
		 */
		public static void destroy(String cargo) {
			jpa.destroy("cargo", "codigo",cargo);
		}
		
		/**
		 * Retorna una instancia de la clase cargo obteniada de la base de datos.
		 * @param codCar
		 * @return
		 * @throws CargoNoEncontrado
		 */
		public static Cargo getCargo (String codCar) throws CargoNoEncontrado {
			ResultSet rs = null;
			Cargo c = null;

			rs = jpa.getByField("cargo","codigo",codCar);
			
			try {
				if (rs.next()) {
					c = new Cargo (rs.getString(1), rs.getString(2));
				} else {
					throw new CargoNoEncontrado();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}

			return c;
		}

		/**
		 * Actualiza los datos de un registro en la tabla.
		 * @param column "Nombre de la columna"
		 * @param value "Valor que reemplaza al existente"
		 * @param id "Campo por el cual se identifica"
		 */
		public static void update (String column,String value, String id) {
			jpa.update("cargo", column, value,"codigo",id);
		}

	}

